package com.czxy.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Map;

/**
 * 购物车
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Cart {

    // 购物车项集合  商品Id 作为key , 购物车项作为value
    private Map<String,CartItem> map = new HashMap<>();
    // 商品的总金额
    private Double totalMoney;

    // 计算总金额
    public Double getTotalMoney() {
        // 总金额 等于 每个购物车项中的 小计之和
        totalMoney = 0.0;
        for (Map.Entry<String, CartItem> entry : map.entrySet()) {
            CartItem cartItem = entry.getValue();
            totalMoney+=cartItem.getSubTotal();
        }
        return totalMoney;
    }

    // 添加购物车项
    public void addCartItem(Product product,int count){
        // 通过商品的pid 获取购物车项 对象 cartItem
        CartItem cartItem = map.get(product.getPid());

        if(cartItem == null){
            // 如果cartItem为空 表示第一次把该商品添加到购物车中
            // 生成购物车项 然后添加到 集合中
            cartItem = new CartItem();
            cartItem.setProduct(product);
            cartItem.setCount(count);

            map.put(product.getPid(), cartItem);
        }else{
            // 如果cartItem不为空 表示该商品已经添加过,集合中已经存在该商品,只需更改
            // 购物车项的数量即可
            cartItem.setCount(cartItem.getCount()+count);
        }

    }

    // 删除购物车项
    public void deleteByPid(String pid){
        map.remove(pid);
    }

    // 清空购物车项
    public void clear(){
        // 清空map集合
        map.clear();
        // 总金额设置为0
        totalMoney = 0.0;
    }

}
